// 消息类型
const TodoType = 'todo'
const heartCheckType = 'ping'

// client 端 通过 http 请求初始化信息
const wsBaseInfo = {
	id: '001',
	name: '张三',
	todoNum: 0,
	type: TodoType,
}
// client 端，心跳保活信息
const heartCheckInfo = {
	type: heartCheckType,
}

// 更新页面 ui
function updateTodoView(todoNum) {
	const todoDom = document.querySelector('#todo')
	todoDom.textContent = todoNum
}

// open 事件
function openCallback(e) {
	const ws = e.target
	ws.send(JSON.stringify(wsBaseInfo))
}

// message 事件
function messageCallback(e) {
	// 后端推送待办数量，并在前端显示
	const message = JSON.parse(e.data)
	if (message.type === TodoType) {
		updateTodoView(message.todoNum)
	}
}

// close 事件
function closeCallback(e) {
	// 清除定时器
	console.log('e', e)
}

// error 事件
function errorCallback(e) {
	console.log('e', e)
}
const config = {
	protocol: 'ws',
	hostname: 'localhost',
	port: '3000',
	timeout: 3000, // 心跳保活
	curReconnectCount: 0,
	maxReconnectCount: 2,
	reconnectTime: 30000,
	heartCheckInfo: heartCheckInfo,
	heartCheckType: heartCheckType,
	openCallback: openCallback,
	messageCallback: messageCallback,
	closeCallback: closeCallback,
	errorCallback: errorCallback,
}

// 初始化 webSocket
new MyWebSocket(TodoType, config)
// 初始化页面待办数量
updateTodoView(wsBaseInfo.todoNum)
